package com.jintian.smart.kernel.core.file;

import com.jintian.smart.kernel.core.domain.RequestUser;
import com.jintian.smart.kernel.core.domain.ResponseDTO;
import org.beetl.sql.core.page.PageResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface IFileService {
    /**
     * 文件上传服务
     *
     * @param file
     * @param folderType 文件夹类型
     * @return
     */
    ResponseDTO<FileUploadVO> fileUpload(MultipartFile file, Integer folderType, RequestUser requestUser);

    /**
     * 批量获取文件信息
     *
     * @param fileKeyList
     * @return
     */
    List<FileVO> getFileList(List<String> fileKeyList);


    /**
     * 根据文件绝对路径 获取文件URL
     * 支持单个 key 逗号分隔的形式
     *
     * @param fileKeys
     * @return
     */
    ResponseDTO<String> getFileUrl(String fileKeys);


    /**
     * 根据文件服务类型 和 FileKey 下载文件
     */
    ResponseDTO<FileDownloadVO> getDownloadFile(String fileKey, String userAgent);

    /**
     * 分页查询
     */
    PageResult<FileVO> queryPage(FileQueryForm queryForm);
}
